package com.dtx.decorator;

/**
 * 仅查看Display类的代码是不能明白程序究竟要做什么的。下面我们来看看它的子类————StringDisplay类。
 * StringDisplay类是用于显示单行字符串的类。由于StringDisplay类是Display类的子类,
 * 因此它肩负着实现Display类中声明的抽象方法的重任。
 * string字段中保存的是要显示的字符串。由于StringDisplay类只显示一行字符串,因此getColumns方法返回
 * string.getBytes().length的值,getRows方法则返回固定值1。
 * 此外,仅当要获取第0行的内容时getRowText方法才会返回string字段。以本章开头的蛋糕的比喻来说,
 * StringDisplay类就相当于生日蛋糕的核心蛋糕。
 */
public class StringDisplay extends Display{

    /**
     * 要显示的字符串
     */
    private String string;

    /**
     * 通过参数传入要显示的字符串
     * @param string
     */
    public StringDisplay(String string) {
        this.string = string;
    }

    /**
     * 获取字符数
     * @return
     */
    @Override
    public int getColumns() {
        return string.getBytes().length;
    }

    /**
     * 行数是1
     * @return
     */
    @Override
    public int getRows() {
        return 1;
    }

    /**
     * 仅当row为0时返回值
     * @param row
     * @return
     */
    @Override
    public String getRowText(int row) {
        if (row == 0) {
            return string;
        }else {
            return null;
        }
    }
}
